Lancement du background writer et du checkpointer lors d’une récupération suite à un crash
Les processus checkpointer et bgwriter sont lancés dès la phase de crash recovery
simplifier le code en limitant la duplication
améliorer les performances dans certains cas
Plus de checkpoint lors de la création d’une database
CREATE DATABASE .. STRATEGY WAL_LOG (valeur par défaut)
opération entièrement tracée dans les WAL
évite deux checkpoints potentiellement impactant pour les performances
manipulation plus sécurisée à la fois sur l’instance primaire et les instances qui rejouent les WAL par la suite, notamment les instances secondaires
CREATE DATABASE .. STRATEGY FILE_COPY
méthode historique
génère moins de WAL
plus rapide quand la base modèle est très grosse
Statistiques d’activité en mémoire partagée
Statistiques d’activité stockées en mémoire
Données perdues en cas de crash.
Disparition du processus stats collector
Disparition du paramètre stats_temp_directory
Nouveau paramètre stats_fetch_consistency
Préservation de l’OID des relfilenodes, tablespaces, et bases de données après une migration pg_upgrade
pg_upgrade préserve désormais :
les relfilenode
les oid de tablespaces
les oid de base de données
pour :
faciliter les analyses post upgrade
économiser de la bande passante quand on resynchronise une instance post upgrade avec rsync
psql
Optimisation des performances de la commande \copy
optimisation de la méta-commande psql \copy from
Nouvelles commandes \getenv et \dconfig
Ajout de nouvelles méta-commandes psql
commande \dconfig pour afficher la configuration de l’instance
commande \getenv pour récupérer la valeur d’une variable d’environnement
Diverses améliorations sur l’auto-complétion
Recherche insensible à la casse
Affichage des noms complets des commandes plutôt que leurs abréviations
Amélioration de l’auto-complétion de différentes commandes SQL :
EXPLAIN EXECUTE
LOCK TABLE ONLY | NOWAIT
ALTER TABLE ... ADD
CREATE, ALTER, DROP
Sauvegarde et restauration
Fin des backups exclusifs
le mode backup exclusive:
risqué en cas de crash de l’instance
déprécié depuis la version 9.6
supprimé depuis la version 15
renommage des fonctions de backup :
pg_start_backup() devient pg_backup_start()
pg_stop_backup() devient pg_backup_stop()
Archive_library & module “basic archive”
Option de remplacement pour l’archive_command
Nouveau paramètre archive_library
Module basic_archive :
basic_archive.archive_directory
Permettre le pre-fetch du contenu des fichiers WAL pendant le recovery
Accélération du recovery grâce au prefetch des blocs de données accédés dans les enregistrements de WAL
recovery_prefetch : try, on, off
wal_decode_buffer_size distance à laquelle on peut lire les WAL en avance de phase
nouvelle vue : pg_stat_recovery_prefetch
pg_basebackup --target
Nouveau paramètre -t/--target pour pg_basebackup
client, server ou blackhole
Sauvegarde sur le serveur seulement accessible aux membres du groupe pg_write_server_files
Possibilité d’ajouter des cibles via des modules additionnels
module basebackup_to_shell fourni en exemple
Ajout de nouveaux algorithmes de compression
Écritures de page complètes :
pglz (défaut utilisé pour on), lz4, zstd
Sauvegardes avec pg_basebackup :
--compression [{client|server}-]method:detail
method: gzip, lz4, zstd
detail: [level=]entier, workers=entier (zstd)
Récupération de WAL avec pg_receivewal :
--compression method:detail
method: gzip, lz4
detail: [level=]entier
pg_dump
Amélioration des performances d’export de bases avec de nombreux objets
désormais une seule requête pour toutes les tables à exporter
élimination de sous-requêtes non nécessaires
utilisation de PREPARE/EXECUTE pour les requêtes répétitives
Amélioration des performances d’export parallélisé de tables TOAST
données TOAST désormais comptabilisées dans la planification d’un export parallélisé
Nouvelles vues et paramètres
Ajout de la vue système pg_ident_file_mappings pour reporter les informations du fichier pg_ident.conf
Nouvelle vue pg_ident_file_mappings
Résume le contenu actuel du fichier pg_ident.conf
Permet le diagnostique d’erreur et la validation de la configuration
Ajout de la vue système pg_stat_subscription_stats pour reporter l’activité d’un souscripteur (cf. Réplication logique)
Donne des informations sur les erreurs qui se sont produites durant la réplication logique
Ajout de la fonction pg_stat_reset_subscription_stats()
Ajout de nouvelles variables serveur shared_memory_size et shared_memory_size_in_huge_pages
Ajout de deux nouvelles variables serveur :
shared_memory_size : détermine la taille de la mémoire partagée
shared_memory_size_in_huge_pages : détermine le nombre de Huge Pages nécessaires pour stocker la mémoire partagée
Englobe les éléments chargés avec shared_preload_libraries
Uniquement accessible en lecture seule
Partitionnement
Amélioration du comportement des clés étrangère lors de mises à jour qui déplacent des lignes entres les partitions
Correction du comportement de PostgreSQL lorsqu’un UPDATE sur une table partitionnée référencée par une contrainte de clé étrangère provoque la migration d’une ligne vers une autre partition.
Traces
Activation de la journalisation des CHECKPOINT et opérations de VACUUM lentes
Changement des valeurs par défaut des paramètres de journalisation :
log_checkpoints par défaut à on
log_autovacuum_min_duration par défaut à 10 minutes.
Format de sortie JSON pour les traces
Nouveau format de sortie pour les fichiers trace : jsonlog
Informations supplémentaires dans VACUUM VERBOSE
Optimisations du code de la commande VACUUM
Amélioration de la verbosité de la commande VACUUM VERBOSE
Divers
Possibilité de donner/restreindre les droits aux commandes SET / ALTER SYSTEM pour les utilisateurs non privilégiés
Apparition de deux nouveaux privilèges :
SET : permet de modifier les paramètres avec le context superuser
ALTER SYSTEM : permet à un utilisateur non superuser de modifier des paramètres avec ALTER SYSTEM SET ...
Donne des droits par rôle et par paramètre
Nouvelle table système pg_parameter_acl qui stocke la configuration
Révocation du droit par défaut CREATE sur le schéma public pour le groupe PUBLIC
USAGE par défaut pour le rôle PUBLIC
CREATE et USAGE par défaut pour le rôle pg_database_owner
adaptation de pg_dump pour extraire ces changements
Attention lors des montées de version !
Ajout de la possibilité de créer des séquences UNLOGGED
Évite de répliquer une séquence d’une table unlogged
Pas dans un but de performance
Une séquence d’identité hérite automatiquement de la persistance de la table de référence
Nouvelle variable d’environnement PSQL_WATCH_PAGER
Permet de définir un pager pour la commande \watch
Privilégier le pager pspg
Fonctionne uniquement sous Unix
Collation icu déclarées globalement
Définition des collations ICU pour toute l’instance ou une base de données